home *** CD-ROM | disk | FTP | other *** search
- /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
- /* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is mozilla.org code.
- *
- * The Initial Developer of the Original Code is
- * Netscape Communications Corporation.
- * Portions created by the Initial Developer are Copyright (C) 1998
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either of the GNU General Public License Version 2 or later (the "GPL"),
- * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- THIS INTERFACE IS DEPRECATED AND UNSUPPORTED! USE |nsIFile| and |nsILocalFile|.
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-
- // This is the only correct cross-platform way to specify a file.
- // Strings are not such a way. If you grew up on windows or unix, you
- // may think they are. Welcome to reality.
-
- #include "nsISupports.idl"
-
- %{C++
- #include "nsFileSpec.h" // for factory method
- %}
-
- interface nsIFileURL;
- interface nsIFilePath;
- interface nsIOutputStream;
- interface nsIInputStream;
-
- // Define Contractid and CID
- %{C++
-
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- THIS INTERFACE IS DEPRECATED AND UNSUPPORTED! USE |nsIFile| and |nsILocalFile|.
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
- // {A5740FA2-146E-11d3-B00D-00C04FC2E79B}
- #define NS_FILESPEC_CID \
- { 0xa5740fa2, 0x146e, 0x11d3, { 0xb0, 0xd, 0x0, 0xc0, 0x4f, 0xc2, 0xe7, 0x9b } }
-
- #define NS_FILESPEC_CONTRACTID "@mozilla.org/filespec;1"
- #define NS_FILESPEC_CLASSNAME "File Spec"
-
- %}
-
- native nsFileSpec(nsFileSpec);
- [ref] native nsFileSpecRef(nsFileSpec);
- [ptr] native nsFileSpecPtr(nsFileSpec);
-
- [scriptable, uuid(37ef2e71-edef-46c7-acd9-f0b6e0b15083)]
- interface nsIFileSpec : nsISupports
- {
- void fromFileSpec([const] in nsIFileSpec original);
-
- attribute string URLString;
- attribute string unixStyleFilePath;
- attribute string persistentDescriptorString;
- attribute string nativePath;
-
- readonly attribute string NSPRPath;
-
- void error();
-
- boolean isValid();
- boolean failed();
-
- attribute string leafName;
-
- readonly attribute nsIFileSpec parent;
- readonly attribute nsIInputStream inputStream;
- readonly attribute nsIOutputStream outputStream;
- boolean isChildOf(in nsIFileSpec possibleParent);
- [noscript] readonly attribute nsFileSpec fileSpec;
- [noscript] void setFromFileSpec([const] in nsFileSpecRef spec);
-
- attribute string fileContents;
-
- void makeUnique();
- void makeUniqueWithSuggestedName(in string suggestedName);
-
- void makeUniqueDir();
- void makeUniqueDirWithSuggestedName(in string suggestedName);
-
- readonly attribute unsigned long modDate;
- boolean modDateChanged(in unsigned long oldStamp);
-
- boolean isDirectory();
- boolean isFile();
- boolean exists();
- boolean isHidden();
-
- boolean equals(in nsIFileSpec spec);
-
- readonly attribute unsigned long fileSize;
- readonly attribute long long diskSpaceAvailable;
-
- void appendRelativeUnixPath(in string relativePath);
-
- void createDir();
- void touch();
-
- boolean isSymlink();
- void resolveSymlink();
-
- void delete(in boolean recursive);
- void truncate(in long aNewLength);
- void rename([const] in string newLeafName);
- void copyToDir([const] in nsIFileSpec newParentDir);
- void moveToDir([const] in nsIFileSpec newParentDir);
- void execute([const] in string args);
-
- void openStreamForReading();
- void openStreamForWriting();
- void openStreamForReadingAndWriting();
- void closeStream();
- boolean isStreamOpen();
-
- boolean eof();
- long read(inout string buffer, in long requestedCount);
- void readLine(inout string line, in long bufferSize, out boolean wasTruncated);
-
- /** Check eof() before each call.
- * CAUTION: false result only indicates line was truncated
- * to fit buffer, or an error occurred (OTHER THAN eof).
- */
- long write(in string data, in long requestedCount);
- void flush();
-
- void seek(in long offset);
- long tell();
- void endLine();
- attribute AString unicodePath;
-
- };
-
- // Define Contractid and CID
- %{C++
- // {a3020981-2018-11d3-915f-a957795b7ebc}
- #define NS_DIRECTORYITERATOR_CID \
- { 0xa3020981, 0x2018, 0x11d3, { 0x91, 0x5f, 0xa9, 0x57, 0x79, 0x5b, 0x7e, 0xbc } }
-
- #define NS_DIRECTORYITERATOR_CONTRACTID "@mozilla.org/directoryiterator;1"
- #define NS_DIRECTORYITERATOR_CLASSNAME "nsIDirectoryIterator"
- %}
-
- [scriptable, uuid(d8c0a083-0868-11d3-915f-d9d889d48e3c)]
- interface nsIDirectoryIterator : nsISupports
- {
- void init(in nsIFileSpec parent, in boolean resolveSymlink);
- boolean exists();
- void next();
- readonly attribute nsIFileSpec currentSpec;
- };
-
- %{C++
- // Factory methods if you link with xpcom
- NS_COM_OBSOLETE nsresult NS_NewFileSpecWithSpec(const nsFileSpec& aSrcFileSpec, nsIFileSpec **result);
- NS_COM_OBSOLETE nsresult NS_NewFileSpec(nsIFileSpec** result);
- NS_COM_OBSOLETE nsresult NS_NewDirectoryIterator(nsIDirectoryIterator** result);
-
- // Convert from nsIFile to nsIFileSpec
- //
- // XXX This function is here only to assist with the migration from nsIFileSpec
- // to nsIFile. This function will dissappear in future mozilla releases.
- //
- // ...ripped from nsPrefService.cpp:
- //
- // "So discouraged is the use of nsIFileSpec, nobody wanted to have this routine be
- // public - It might lead to continued use of nsIFileSpec. Right now, [mozilla] has
- // such a need for it, here it is. Let's stop having to use it though."
- //
- NS_COM_OBSOLETE nsresult NS_NewFileSpecFromIFile(nsIFile *aFile, nsIFileSpec **result);
-
- #define NS_BOOL_ACCESSOR(_method) { PRBool yes; return NS_SUCCEEDED(f->_method(&yes)) && yes; }
- inline PRBool Exists(nsIFileSpec* f) NS_BOOL_ACCESSOR(Exists)
- inline PRBool Exists(nsIDirectoryIterator* f) NS_BOOL_ACCESSOR(Exists)
- inline PRBool IsDirectory(nsIFileSpec* f) NS_BOOL_ACCESSOR(IsDirectory)
-
- %}
-